Having a variable with the same name in two unrelated classes is fine, but do the same thing within a class hierarchy and you’ll get confusion at
best, chaos at worst.
Noncompliant code example
Public Class Fruit
Protected Ripe As Season
Protected Flesh As Color
' ...
End Class
Public Class Raspberry
Inherits Fruit
Private Ripe As Boolean ' Noncompliant
Private Shared FLESH As Color ' Noncompliant
' ...
End Class
Compliant solution
Public Class Fruit
Protected Ripe As Season
Protected Flesh As Color
' ...
End Class
Public Class Raspberry
Inherits Fruit
Private Riped As Boolean
Private Shared FLESH_COLOR As Color ' Noncompliant
' ...
End Class
Exceptions
This rule ignores same-name fields that are Shared
in both the parent and child classes. It also ignores Private
parent
class fields and fields explicitly declared as Shadows
, but in all other such cases, the child class field should be renamed.
Public Class Fruit
Private Ripe As Season
Protected Flesh As Color
' ...
End Class
Public Class Raspberry
Inherits Fruit
Private Ripe As Season ' Compliant as parent field 'Ripe' is not visible from Raspberry anyway
Protected Shadows Flesh As Color ' Compliant as the intention is explicitly declared
' ...
End Class